color16 2.2.3
Loading...
Searching...
No Matches
color16


Color 16 Click

Color 16 Click demo application is developed using the NECTO Studio, ensuring compatibility with mikroSDK's open-source libraries and tools. Designed for plug-and-play implementation and testing, the demo is fully compatible with all development, starter, and mikromedia boards featuring a mikroBUS™ socket.


Click Library

  • Author : Stefan Filipovic
  • Date : Oct 2022.
  • Type : I2C type

Software Support

Example Description

This example demonstrates the use of Color 16 Click by reading and displaying the values from all 14 channels.

Example Libraries

  • MikroSDK.Board
  • MikroSDK.Log
  • Click.Color16

Example Key Functions

  • color16_cfg_setup Config Object Initialization function.
    void color16_cfg_setup(color16_cfg_t *cfg)
    Color 16 configuration object setup function.
    Color 16 Click configuration object.
    Definition color16.h:375
  • color16_init Initialization function.
    err_t color16_init ( color16_t *ctx, color16_cfg_t *cfg );
    err_t color16_init(color16_t *ctx, color16_cfg_t *cfg)
    Color 16 initialization function.
    Color 16 Click context object.
    Definition color16.h:354
  • color16_default_cfg Click Default Configuration function.
    err_t color16_default_cfg(color16_t *ctx)
    Color 16 default configuration function.
  • color16_read_data This function checks if the spectral measurement data is ready and then reads data from all channels along with the STATUS and ASTATUS bytes.
    err_t color16_read_data ( color16_t *ctx, color16_data_t *data_out );
    err_t color16_read_data(color16_t *ctx, color16_data_t *data_out)
    Color 16 read data function.
    Color 16 Click data object.
    Definition color16.h:325
  • color16_set_wait_time_ms This function sets the wait time in milliseconds by setting the WTIME register.
    err_t color16_set_wait_time_ms ( color16_t *ctx, float wait_time_ms );
    err_t color16_set_wait_time_ms(color16_t *ctx, float wait_time_ms)
    Color 16 set wait time ms function.
  • color16_set_integration_time_ms This function sets the integration time in milliseconds by setting the ATIME and ASTEP registers.
    err_t color16_set_integration_time_ms ( color16_t *ctx, float int_time_ms );
    err_t color16_set_integration_time_ms(color16_t *ctx, float int_time_ms)
    Color 16 set integration time ms function.

Application Init

Initializes the driver and performs the Click default configuration.

void application_init ( void )
{
log_cfg_t log_cfg;
color16_cfg_t color16_cfg;
LOG_MAP_USB_UART( log_cfg );
#ifdef INTERFACE_LOGGER_UART
log_cfg.is_interrupt = false;
#endif
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// Click initialization.
color16_cfg_setup( &color16_cfg );
if ( I2C_MASTER_ERROR == color16_init( &color16, &color16_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
if ( COLOR16_ERROR == color16_default_cfg ( &color16 ) )
{
log_error( &logger, " Default configuration." );
for ( ; ; );
}
log_info( &logger, " Application Task " );
}
@ COLOR16_ERROR
Definition color16.h:395
#define COLOR16_MAP_MIKROBUS(cfg, mikrobus)
MikroBUS pin mapping.
Definition color16.h:310
void application_init(void)
Definition main.c:33
#define MIKROBUS_POSITION_COLOR16
Definition main.c:27

Application Task

Waits for the spectral measurement complete flag and then reads data from all 14 channels in 3 cycles, and displays the results on the USB UART every 300ms approximately.

void application_task ( void )
{
color16_data_t color_data;
if ( COLOR16_OK == color16_read_data ( &color16, &color_data ) )
{
log_printf ( &logger, " STATUS: 0x%.2X\r\n", ( uint16_t ) color_data.status );
log_printf ( &logger, " ASTATUS: 0x%.2X\r\n", ( uint16_t ) color_data.astatus );
log_printf ( &logger, " ------- Cycle 1 -------\r\n" );
log_printf ( &logger, " Channel FZ: %u\r\n", color_data.ch_fz );
log_printf ( &logger, " Channel FY: %u\r\n", color_data.ch_fy );
log_printf ( &logger, " Channel FXL: %u\r\n", color_data.ch_fxl );
log_printf ( &logger, " Channel NIR: %u\r\n", color_data.ch_nir );
log_printf ( &logger, " Channel 2xVIS_1: %u\r\n", color_data.ch_2x_vis_1 );
log_printf ( &logger, " Channel FD_1: %u\r\n", color_data.ch_fd_1 );
log_printf ( &logger, " ------- Cycle 2 -------\r\n" );
log_printf ( &logger, " Channel F2: %u\r\n", color_data.ch_f2 );
log_printf ( &logger, " Channel F3: %u\r\n", color_data.ch_f3 );
log_printf ( &logger, " Channel F4: %u\r\n", color_data.ch_f4 );
log_printf ( &logger, " Channel F6: %u\r\n", color_data.ch_f6 );
log_printf ( &logger, " Channel 2xVIS_2: %u\r\n", color_data.ch_2x_vis_2 );
log_printf ( &logger, " Channel FD_2: %u\r\n", color_data.ch_fd_2 );
log_printf ( &logger, " ------- Cycle 3 -------\r\n" );
log_printf ( &logger, " Channel F1: %u\r\n", color_data.ch_f1 );
log_printf ( &logger, " Channel F5: %u\r\n", color_data.ch_f5 );
log_printf ( &logger, " Channel F7: %u\r\n", color_data.ch_f7 );
log_printf ( &logger, " Channel F8: %u\r\n", color_data.ch_f8 );
log_printf ( &logger, " Channel 2xVIS_3: %u\r\n", color_data.ch_2x_vis_3 );
log_printf ( &logger, " Channel FD_3: %u\r\n", color_data.ch_fd_3 );
log_printf ( &logger, " -----------------------\r\n\n" );
Delay_ms ( 300 );
}
}
@ COLOR16_OK
Definition color16.h:394
void application_task(void)
Definition main.c:72
uint16_t ch_f4
Definition color16.h:336
uint8_t astatus
Definition color16.h:327
uint16_t ch_fz
Definition color16.h:328
uint16_t ch_2x_vis_3
Definition color16.h:344
uint16_t ch_fd_2
Definition color16.h:339
uint16_t ch_f6
Definition color16.h:337
uint16_t ch_2x_vis_2
Definition color16.h:338
uint16_t ch_fd_1
Definition color16.h:333
uint16_t ch_f2
Definition color16.h:334
uint16_t ch_f3
Definition color16.h:335
uint16_t ch_fxl
Definition color16.h:330
uint16_t ch_fd_3
Definition color16.h:345
uint16_t ch_fy
Definition color16.h:329
uint16_t ch_2x_vis_1
Definition color16.h:332
uint16_t ch_nir
Definition color16.h:331
uint16_t ch_f1
Definition color16.h:340
uint16_t ch_f8
Definition color16.h:343
uint16_t ch_f7
Definition color16.h:342
uint8_t status
Definition color16.h:326
uint16_t ch_f5
Definition color16.h:341

Application Output

This Click board can be interfaced and monitored in two ways:

  • Application Output - Use the "Application Output" window in Debug mode for real-time data monitoring. Set it up properly by following this tutorial.
  • UART Terminal - Monitor data via the UART Terminal using a USB to UART converter. For detailed instructions, check out this tutorial.

Additional Notes and Information

The complete application code and a ready-to-use project are available through the NECTO Studio Package Manager for direct installation in the NECTO Studio. The application code can also be found on the MIKROE GitHub account.